iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0

OPTICS (Ordering Points To Identify the Clustering Structure) 是一種用於密度基礎聚類的算法。它擴展了 DBSCAN 的概念,並解決了 DBSCAN 對於不同密度的資料集表現不佳的問題。OPTICS 主要通過產生一個排序的資料點列表來識別聚類結構,這個列表根據資料點之間的密度關係排序。與 DBSCAN 不同,OPTICS 可以更好地處理具有不同密度區域的資料集。

OPTICS

  1. 核心距離 (Core Distance):一個點的核心距離是指該點在其鄰域內可以成為核心點所需的最小距離。如果一個點沒有足夠的鄰居來形成一個核心點,那麼它的核心距離是無窮大。

  2. 可達距離 (Reachability Distance):對於給定點 A 和鄰居點 B,B 的可達距離是 B 與 A 的距離和 A 的核心距離中的較大者。這個距離度量了點 B 到達點 A 的難易程度。

  3. 排序 (Ordering):OPTICS 通過按點的可達距離對點進行排序,從而產生一個類似於資料層次結構的表示。這種排序使得 OPTICS 能夠識別不同密度的聚類。

  4. 選擇一個未訪問過的點作為當前點,計算其核心距離和可達距離。

  5. 按照可達距離將當前點的鄰居點插入訂單列表,並標記當前點已訪問。

  6. 重複這個過程直到所有點都被訪問過。

與 DBSCAN 的比較:

  • 相似之處:OPTICS 和 DBSCAN 都是基於密度的聚類算法,並且都不需要指定聚類的數量。
  • 不同之處:DBSCAN 通常需要指定一個固定的 epsilon(鄰域範圍)來確定點是否應該被歸為一個聚類,而 OPTICS 通過產生一個訂單列表來更好地處理不同密度區域的資料。
from sklearn.cluster import OPTICS
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt


iris = load_iris()
X = iris.data

optics = OPTICS(min_samples=5, xi=0.05, min_cluster_size=0.1)
optics.fit(X)

plt.figure(figsize=(10, 7))
plt.scatter(X[:, 0], X[:, 1], c=optics.labels_, cmap='plasma')
plt.title('OPTICS Clustering on Iris Dataset')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()
  • min_samples:定義了一個點被視為核心點所需的最小鄰居數量。
  • xi:OPTICS 中的降噪參數,用於控制在多高的層次上應該切割聚類。
  • min_cluster_size:最小的聚類大小,表示為整體資料大小的比例。

上一篇
DAY18 Mean Shift 18/30
下一篇
DAY20 CLIQUE 模型 20/30
系列文
機器學習與深度學習背後框架與過程論文與實作28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言